package org.zjx.model.route;

import org.zjx.entity.Location;
import org.zjx.enums.route.RouteType;

/**
 * 路由基础接口
 * 定义游戏中所有路径的通用行为
 */
public interface Route {

    /**
     * 获取路径起点
     *
     * @return 起点位置对象（不会返回null）
     */
    Location getStart();

    /**
     * 获取路径终点
     *
     * @return 终点位置对象（不会返回null）
     */
    Location getEnd();

    /**
     * 获取路径耗时（秒）
     *
     * @return 正整数表示耗时
     */
    int getTime();

    /**
     * 获取路径类型
     *
     * @return 路由类型枚举
     */
    RouteType getType();

    /**
     * 检查路径是否可逆
     *
     * @return 如果支持双向通行返回true
     */
    boolean isReversible();

    /**
     * 获取反向路径
     *
     * @return 反向路径对象
     * @throws UnsupportedOperationException 如果路径不可逆
     */
    Route getReverseRoute();

    /**
     * 获取路径描述信息
     *
     * @return 人类可读的描述信息
     */
    String getDescription();
}